home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 September / Chip_2004-09_cd1.bin / program / delphi / download / nastroje / 97.mpth_10[1].exe / {app} / scripts / XOR Data.mps < prev   
Text File  |  2003-09-21  |  1KB  |  51 lines

  1. = xor a file's contents
  2.  
  3. option globalvars 1
  4. var start dword count dword xval qword editorf file val qword oldpos dword rest dword
  5.  
  6. editorf = fileopen('::current', 'rw')
  7. number_radix = 10
  8. number_prefix = ''
  9. number_suffix = ''
  10. start = dword(input("XOR file","Enter start position",text(filegetprop(editorf, 'selstart'))))
  11. if filegetprop(editorf, 'selcount') == 0
  12.   count = filesize(editorf) - start
  13. else
  14.   count = filegetprop(editorf, 'selcount')
  15. endif
  16. count = dword(input("XOR file", "Enter count", Text(count)))
  17. xval = qword(input("XOR file","Enter XOR value",'255'))
  18. if xval > 0:= qword is signed
  19.   if xval < 256:inc xval (xval << 8):endif
  20.   if xval < 0x10000:inc xval (xval << 16):endif
  21.   if xval < 0x100000000:inc xval (xval << 32):endif
  22. endif
  23.  
  24. fileseek editorf start
  25. loop schleife (count / 8)
  26. rest = count mod 8
  27. if rest != 0
  28.   val = 0
  29.   oldpos = filepos(editorf)
  30.   count=fileread(editorf, @val):= use in function context to avoid short read error
  31.   fileseek editorf oldpos
  32.   filewrite editorf textcopy(data2text(qword(val xor xval)),1, rest)
  33. endif
  34. showprogress 100, 100
  35. fileclose editorf
  36. end
  37.  
  38. @@schleife
  39. oldpos = filepos(editorf)
  40. fileread editorf val
  41. fileseek editorf oldpos
  42. val = val xor xval
  43. filewrite editorf val
  44. showprogress count+start, filepos(editorf)-start
  45. return
  46.  
  47.  
  48.  
  49.  
  50.  
  51.